
import numpy as np


def main(grid):
    grid = np.array(grid)
    n = grid.shape[1]
    m = grid.shape[0]
    
    dp = np.zeros((grid.shape[0],grid.shape[1]))
    dp[0,0] = grid[0,0]
    for i in range(1,n):
        dp[0,i] = dp[0,i-1]+grid[0,i] 
    for i in range(1,m):
        dp[i,0] = dp[i-1,0]+grid[i,0]

    for i in range(1,m):
        for j in range(1,n):
            dp[i,j] = min(dp[i-1,j],dp[i,j-1])+grid[i,j]

    return dp[-1,-1]
        

grid = [[1,2,3],[4,5,6]]
print(main(grid))